1. Field
The embodiments discussed herein are directed to a system that considers a solver as a sequence of steps involving “objects” and their “relations.”
2. Description of the Related Art
This discussion describes a framework for an implementation of a graphical dynamics simulator (“solver”). In computer graphics there is a need to simulate the motion of interacting objects over time. For example, in games virtual characters respond to collisions with surrounding objects and external forces. Usually a solver is hard coded for a fixed number of objects and their possible interactions. Adding new types of objects and tweaking their interactions requires that the internal logic of the solver be modified directly. This makes it often hard to expand or modify the solver. This is especially problematic when a third party wants to modify the solver in some way or other. In general, the third party does not have access to the source code of the solver and therefore cannot modify the solver directly. In fact this situation is quite common in the special effects film industry. No solver will exactly meet the expectations of a production house. Often the output of the simulation is tweaked to achieve a certain effect. It would be much more convenient if animators could directly control the logic of the simulation and modify it. It is also important that all interactions are computed in a single solver. Frequently, animators use a variety of solvers for different effects such as rigid body motion, hair movement, pouring liquids or modeling cloth. The problem is that one solver always takes precedence over the others which introduces unwanted biases. Also problematic is the handling of two way interaction between phenomena, like a rigid soccer ball being kicked into a net, this requires that the rigid body solver be connected to the cloth solver for the net. Having a single general solver that allows many different objects to interact resolves this problem.